home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / Games / lptalk-1.3 / fred.c < prev    next >
C/C++ Source or Header  |  1995-05-03  |  3KB  |  119 lines

  1. /************************************************************************/
  2. /* LP-Talk
  3.     Version 1.0 [ 9/24/90]
  4.     Version 1.1 [ 9/27/90]
  5.     Version 1.2 [ 9/28/90]
  6. */
  7. /* TinyTalk : Connect to a TinyMUD world.                */
  8. /*                                    */
  9. /*    Version 1.0 [ 1/24/90] : Initial implementation by ABR.        */
  10. /*                 Contact rang@cs.wisc.edu for support.  */
  11. /*                                    */
  12. /*        1.1 [ 2/ 2/90] : Added many new commands; reorganized   */
  13. /*                 some files.                */
  14. /*                                    */
  15. /*   This program connects to a TinyMUD world via the TELNET protocol.  */
  16. /* It provides the following features:                    */
  17. /*                                    */
  18. /*   Portal recognition: Some TinyMUD systems have portals to other     */
  19. /*                       worlds.  TinyTalk deals with these correctly.  */
  20. /*                                    */
  21. /*   Word wrap: If word wrap is desired, it may be enabled.        */
  22. /*                                    */
  23. /*   Command refresh: When TinyMUD prints a message, the command line   */
  24. /*              typed so far is reprinted.            */
  25. /*                                    */
  26. /*   Macros: Simple macros may be defined.                */
  27. /*                                    */
  28. /*   Configuration file: Characters, parameters, and macros may be set  */
  29. /*             automatically.                    */
  30. /*                                    */
  31. /*   Page handling: Pages may trigger beeps.                */
  32. /*                                    */
  33. /*   Gags: Messages from certain characters or robots may be ignored.    */
  34. /*                                    */
  35. /************************************************************************/
  36.  
  37. #include <stdio.h>
  38. #include "tl.h"
  39.  
  40. extern world_rec *get_default_world(), *find_world();
  41. extern char *malloc();
  42.  
  43. world_rec *boot_world();
  44.  
  45. main(argc, argv)
  46.   int argc;
  47.   char *argv[];
  48. {
  49.   world_rec *first_world;
  50.  
  51.   clear_quiet();            /* Initialize subsystems.      */
  52.   init_logging();            /* Don't do keyboard yet, though. */
  53.   init_macros();
  54.   enable_auto_login();
  55.   enable_wrap(0);            /* Enable default wrapping. */
  56.   set_beep(3);                /* Set default beep mode. */
  57.   init_hiliting();
  58.   init_gagging();
  59.   preinit_keyboard();            /* Initialization before */
  60.                     /* config file is read. */
  61.  
  62.   read_configuration();
  63.   first_world = boot_world(argc, argv);
  64.  
  65.   init_keyboard();
  66.   do_stuff(first_world);
  67. }
  68.  
  69. world_rec *boot_world(argc, argv)
  70.   register int argc;
  71.   register char *argv[];
  72. {
  73.   register world_rec *temp;
  74.  
  75.   if ((argc >= 2) && (!strcmp(argv[1], "-"))) { /* Option '-'. */
  76.     disable_auto_login();
  77.     --argc;
  78.     argv++;
  79.   }
  80.  
  81.   if (argc == 1) {            /* Try default world */
  82.     temp = get_default_world();
  83.  
  84.     if (temp == NULL)
  85.       die("%% You must specify a world; there is no default set.\n");
  86.     else                /* Have a default. */
  87.       return (temp);
  88.   }
  89.   else if (argc == 2) {            /* World specified. */
  90.     if (argv[1][0] == '-') {        /* Check for '-' option */
  91.       disable_auto_login();
  92.       argv[1]++;
  93.     }
  94.     temp = find_world(argv[1]);
  95.     if (temp == NULL)
  96.       die("%% The world %s is unknown.\n", argv[1]);
  97.     else
  98.       return (temp);
  99.   }
  100.   else if (argc == 3) {            /* Port and address specified. */
  101.     temp = (world_rec *) malloc(sizeof(world_rec)); /* Never reclaimed! */
  102.     temp->next = NULL;
  103.     strcpy(temp->world, "World");
  104.     *(temp->character) = '\0';
  105.     *(temp->pass) = '\0';
  106.     if (argv[1][0] == '-') {        /* Disable auto login; otherwise */
  107.       disable_auto_login();        /* we might use the default. */
  108.       argv[1]++;
  109.     }
  110.     strcpy(temp->address, argv[1]);
  111.     strcpy(temp->port, argv[2]);
  112.     return (temp);
  113.   }
  114.   else
  115.     die("Usage: %s [world]\n       %s address port\n", argv[0], argv[0]);
  116.  
  117.   return (NULL);
  118. }
  119.